#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define PORTNUM 8000

int main(int argc,char *argv[],char *envp[]){
   
   struct sockaddr_in dest; /* socket info about the machine connecting to us */
   struct sockaddr_in serv; /* socket info about our server */
   int mysocket;            /* socket used to listen for incoming connections */
   int socksize = sizeof(struct sockaddr_in);

   memset(&serv, 0, sizeof(serv));    /* zero the struct before filling the fields */
   serv.sin_family = AF_INET;         /* set the type of connection to TCP/IP */
   serv.sin_addr.s_addr = INADDR_ANY; /* set our address to any interface */
   serv.sin_port = htons(PORTNUM);    /* set the server port number */    

   mysocket = socket(AF_INET, SOCK_STREAM, 0);

   /* bind serv information to mysocket */
   bind(mysocket, (struct sockaddr *)&serv, sizeof(struct sockaddr));

   /* start listening, allowing a queue of up to 1 pending connection */
   listen(mysocket, 1);
   int consocket = accept(mysocket, (struct sockaddr *)&dest, &socksize);

   while(consocket)
   {
  //printf("Incoming connection from %s - sending welcome\n", inet_ntoa(dest.sin_addr));
   char msg[255];
   char buffer[120];
   int len=0;
   len = recv(consocket, buffer,120 , 0);
   if(len<=0)
      break;
   if(len>1){
   buffer[len]='\0';
   sprintf(msg,"--Received--\n%s\nEnd(%d bytes).\n", buffer, len);
   printf("%s",buffer);
   send(consocket, msg, strlen(msg), 0); 
   }else{
      //len==1 
      printf("(NULL)");
   }
   
   }

   close(consocket);
   close(mysocket);
}
